aiboのWebAPIドキュメントを読んでみたら色々使えそうで夢が広がった。
せーのでございます。
先日、ついにSONYの誇るロボット犬「aibo」のAPIが公開されました。
今年の1月にAPIの公開がSONYより発表され、夏ごろ、という当初の予定より少し遅れての公開となり、エンジニアとしては待ちに待った人も多いのではないでしょうか。
APIと同時にドキュメントが公開されましたので早速読んでみました。
何ができそうか
aiboは元々学習機能があり、声を掛けたり、コミュニケーションを取る事によって甘えん坊になったり、ワイルドになったりと独自の成長を遂げます。例えば音声で言えば現時点で下記の「呼びかけ」に反応します。
逆に言えば普通の犬同様、細かい指示を出してもそれに反応することはできませんし、aiboのセンサー外で行われていることには気が付きません。
ところが今回APIが公開され、しかもそれがコンパイルしてaiboに直接デプロイするようなタイプではなくWebAPIであるということは、いくら遠くにいたとしてもインターネットさえ繋がっていれば、プログラミングを通していつでもaiboとコミュニケーションを取ることができるわけです。
例えばスマホのGPSで自宅の近くまで来たらAPIを叩いてaiboに玄関までお出迎えしてもらったり、Alexaと会話をしている時に特定の会話で一緒に喜んだりできます。
全てをプログラミングできてしまうとせっかくのaiboがただのロボットになってしまいそうですが、aiboの場合は本来のaiboの動きはキープしたままAPIの操作を行うことができ、さらにその時のaiboの「機嫌」によって挙動が変わってくるのだそうです。
本来のロボティクスや機械学習とAPIによる制御をうまくかけ合わせた感じで、色々な応用に効きそうな技術ですね。
ドキュメントを読んでみた
それでは早速公開されたドキュメントを読んでみたいと思います。
基本的な仕組み
基本的な仕組みはこのようになっています。
まずaiboをMy aiboというSonyの製品登録に登録している人のみがアクセストークンを取得できます。このアクセストークンをHeaderに入れてリクエストを叩くとAPIがSonyのクラウドに届きます。
次に各aiboに固有のdeviceIDを指定することにより特定のaiboに対して指示が出せます。このdeviceIDもWebAPIを通じて取得します。複数のaiboを持っている家庭はこれによってそれぞれのaiboに指示を振り分けます。
アクセストークンは一定期間経つと使用不可となり、一旦廃棄した後に新たにトークンを取得する形となります。
APIはカテゴリとして基本設定に関する「setting API」、aiboに対してのアクションを指示する「action API」、aiboに対して行われた声掛けやふれあい、aiboの今の状態を取得する「cognition API」の3種類となります。各リクエストに対してはexecutionIdという固有のIDが振られ、戻り値として返ってきます。リクエストはPOSTで投げられるので、実行結果を取得する際はそのexecutionIdを元にGETメソッドを投げることで値が返ってきます。リミットレートは 1000req/h となります。
setting API
API | 内容 | 備考 |
---|---|---|
GetDevices | 所有aibo一覧を取得 | deviceIDはここで取得 |
Get Result of API | 実行結果を取得する | |
SetMode | aiboを指示待ち中にするか指定 |
基本的なセッティングに関するAPI群です。
SetModeとはaiboの「指示待ち」に関する指示です。
aiboは基本自動で動くので、APIの指示結果が伝わっているのかわかりにくい事もあります。そんな時にはSetModeメソッドをかけてあげると、aiboが「指示待ち」状態となります。
action API
actionは全部で20種類となります。
API | 内容 | 備考 |
---|---|---|
ApproachObject | 指定されたものを探して近づく | |
ApproachPerson | 人を探して指定された距離まで近づく | |
ChangePosture | 指定された姿勢を取る | |
ChaseObject | 指定されたものを見る | |
ChasePerson | 人を見る | |
FindObject | ものを探す | |
FindPerson | 人を探す | |
GetCloseToObject | 近くまで近づく | ApproachObjectの後に使用 |
KickObject | 蹴ったりヘディングしたりする | |
MoveAlongCircle | 円を描いて歩く | |
MoveDirection | 指定された方向に歩く | |
MoveForward | 前後に歩く | |
MoveHead | 首と顔を動かす | |
MoveSideways | 横歩きする | |
PlayBone | 別売りのホネで遊ぶ | |
PlayMotion | 指定されたふるまいをする | |
PlayDice | 別売りのサイコロで遊ぶ | |
ReleaseObject | くわえているものを離す | |
Stay | 待つ | |
TurnAround | おまわりする | 角度指定自由 |
かなりの種類のアクションが制御できますね。特にPlayMotionやChasePerson、MoveHeadなどは使い勝手の良いAPIになりそうです。
cognition API
cognition APIからは9種類の状態を取得できます。
API | 内容 | 備考 |
---|---|---|
BitingStatus | ものをくわえているかどうか | |
BodyTouchedStatus | 体のどの部分を触られているのかどうか | |
FoundObjectsStatus | aiboが認識しているものや人 | |
HungryStatus | バッテリー残量 | |
NameCalledStatus | 自分の名前を呼ばれたかどうか | 呼ばれた方向も取得できる |
PawPadsStatus | 肉球が押されているかどうか | |
PostureStatus | 現在とっている姿勢 | |
SleepyStatus | 眠さ | |
VoiceCommandStatus | aiboが反応した言葉 |
音声認識の部分が特に使えそうな感じがします。惜しむらくはこれらの状態取得もPOSTでコマンドを投げる必要があるので、将来的にこれがイベントドリブンになるとより使い勝手が増しそうですね。
まとめ
以上、ドキュメントを一通り読んでみました。かなり細かい部分での制御が可能となっていますね。
人感センサーや顔認識などのソリューション、Alexaなどのスマートスピーカーと組み合わせて使うことで、よりaiboに愛着がわくこと間違いなしです!
一方これからの進化も気になるところです。特に音声認識でのカスタム化は是非実装していただきたいです。これからもaiboの進化から目が離せません。